##########################################
#   Assignment：单株性状调查表生成
#   Date：Nov 20, 2019
#   Author: Shawn Wang
##########################################
## 没什么用，如果单株太多，在excel里操作麻烦推荐用这个
## 要求每行单株数量差不多，行是连续的，如果设计过于麻烦，还是手动输入把....毕竟用批量操作的数据，大多数是有规律的。
## 设置工作目录，可以手动输入，类似下面，也可以通过菜单栏的session -> set Working dirctory -> choose dirctory 选择，这个文件夹就是最后输出放置的文件夹。
setwd("/Volumes/FileManage/06.360Drive/02.heterosis_project/06.Phenotype/")

##==================只需要改这里=后面的信息=====================
## 生成行号-单株编号
start = 195334  ## 起始行号
end = 195435  ## 终止行号
each = 15 ## 每行单株个数
title = "王骁单株"

##==================下面的内容不需要修改=====================
rownum <- paste(rep(c(start:end),each = each),rep(c(1:each),times = (end+1-start)),sep = "-")#生成行号-单株编号    
length(rownum) ## 检查下总数对不对
## 先前在excel中调整大小发现一页A4纸放32行大小正好，所以这里按照32行排列，完了在excel中要调整页面大小，调整单元格高度，建议按住shift把要调整的行选中统一拉过调整
groupnum <- ceiling(length(rownum)/32) # 每行有32个，总数除以32表示需要循环多少遍
## 用for循环累计叠加将每一组32个写成一个dataframe。
library(dplyr) # 如果提示没有这包跑一下install.packages("dplyr")
tmp <- list()
tmp2 <- list()
for (i in 1:groupnum) {
  tmp[[i]] = data.frame(RNum = c("单株编号",rownum[c((1:32)+32*(i-1))]),
                        BN = c("铃数",rep("NA",time = 32)),
                        SCY = c("籽棉",rep("NA",time = 32)),
                        LY = c("皮棉",rep("NA",time = 32)))
}
tmp[[i]]## 看下最后一个里面是否包含了你最后一个单株编号
## 每页A4纸可以放3组，所以再写一个循环，用cbind把他们按顺序3个3个粘贴到一个df中
a <- seq(1,groupnum,3)
pagenum <- ceiling(groupnum/3)
for (j in 1:pagenum ) {
  x <- a[j] 
  y <- ifelse(j <10,paste("0",j,sep = ""),j)# 由于linux下排序个位数如果不加0会导致1完了是10造成不必要的麻烦，这里需要在个位数前面加个0
  tmp2[[j]] <- cbind(tmp[[x]],tmp[[x+1]],tmp[[x+2]])
  write.table(tmp2[[j]],file = paste(title,y,"xls",sep = "."),
              col.names = F,
              row.names = F,
              quote = F,
              sep = "\t",
              fileEncoding = "UTF-8")
}
##====================结果就在下面的介绍里=============================
## 代码跑完在你刚开始设置的working directory下会出现
## 由于R中rbind会自动合并colnames相同的column，所以R下暂时没办法将这几个文件合并。
## 文件合并推荐用linux下的cat命令：
# cat 王骁单株.* > 2019王骁单株性状统计表.xls
## 由于excel和其他编码方式不一样，直接用ms excel打开会出现中文乱码，建议用WPS打开，用替换工具替换掉NA
## 调整单元格大小，纸张大小，让一页纸正好能够放下做好的32行及表头，然后加边框搞定。
